package com.oil.petro.eshop.dao;

import com.oil.petro.eshop.entity.Account;
import com.oil.petro.eshop.entity.Person;
import com.oil.petro.eshop.utils.HibernateUtil;
import java.io.Serializable;
import javax.transaction.Transactional;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;

//@Repository
//@Repository("PersistenceAccount")
public interface AccountDAO  {

    
    public Account get(int id);

    public void delete(Account account);

    public int save(Account account);

    public void update(Account account);
    public Account getByLogin(String login);
    

//    public int add(Account account) {
//        Session session = HibernateUtil.getSessionFactory().openSession();
//        Transaction tx = session.beginTransaction();
//        Integer accountID = null;
//
//        try {
//            accountID = (Integer) session.save(account);
//
//            session.getTransaction().commit();
//        } catch (HibernateException e) {
//            if (tx != null) {
//                tx.rollback();
//            }
//            e.printStackTrace();
//        } finally {
//            session.close();
//        }
//        System.out.println("add");
//        return accountID;
//    }
//
//    public void delete(Account account) {
//        Session session = HibernateUtil.getSessionFactory().openSession();
//        Transaction tx = session.beginTransaction();
//
//        try {
//            session.delete(account);
//
//            session.getTransaction().commit();
//        } catch (HibernateException e) {
//            if (tx != null) {
//                tx.rollback();
//            }
//            e.printStackTrace();
//        } finally {
//            session.close();
//        }
//        System.out.println("delete");
//    }
//
//    public void update(Account account) {
//        Session session = HibernateUtil.getSessionFactory().openSession();
//        Transaction tx = session.beginTransaction();
//
//        try {
//            session.update(account);
//
//            session.getTransaction().commit();
//        } catch (HibernateException e) {
//            if (tx != null) {
//                tx.rollback();
//            }
//            e.printStackTrace();
//        } finally {
//            session.close();
//        }
//        System.out.println("update");
//    }
//
//    public Account get(int id) {
//        Session session = HibernateUtil.getSessionFactory().openSession();
//        Transaction tx = session.beginTransaction();
//        Account account = null;
//        Account object= null;
//        try {
//            account = (Account) session.get(Account.class, id);
//object = account.
//            session.getTransaction().commit();
//        } catch (HibernateException e) {
//            if (tx != null) {
//                tx.rollback();
//            }
//            e.printStackTrace();
//        } finally {
//            session.close();
//        }
//        System.out.println("get");
//        return account;
//    }

//     @Autowired
//	private SessionFactory sessionfactory;
//    
//    
//   
////	public void setSessionFactory(SessionFactory sessionFactory) {
////		this.sessionfactory = sessionFactory;
////	}	
//    
//    public void saveAccount(Account account) {
//        sessionfactory.getCurrentSession().saveOrUpdate(account);
//        //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
//    }
//
//    public Account get(int id) {
//        
//        
//     return   (Account) sessionfactory.getCurrentSession().get(Account.class, id);
//    
//    
//    }
//    
}
